Conditional page breaks in SSRS | 您所在的位置:网站首页 › how can i achieve conditional page breaks › Conditional page breaks in SSRS |
Having a conditional page break and the right totals at the end of each group is more tricky
Lets suppose you have a report with 2 groups and 1 detail. You also have a pagebreak parameter defining in which group page break will occur. O= no break, 1 = break on group1, 2= break on group 2
Your report without page breaks would look like this: ---------------------------- Header Group1Header Group2Header Detail Group2Footer(SUM) Group1Footer(SUM) Footer(Grand Total) ---------------------------
To make the custom page breaks you have to have twice each group plus one for grand total. Your report now will look like this ---------------------------- Header Group1Header (controls page break, contains group1 headers) Group2Header (controls page break, contains group2 headers) Group1_2_Header (contains group1 headers) Group2_2_Header (contains group2 headers) Detail (contains detail and measure) Group2_2_Footer(SUM of group2) Group1_2_Footer(SUM of group1) Group_Grand_total_Footer(report grand total) ---------------------------
For Group1Header and Group2Header you set the page break value after the end of each group and set the right group values Group1Header : =Iif(Parameters!pagebreak.Value>0,Fields!Group1.Value,"") Group2Header : =Iif(Parameters!pagebreak.Value>1,Fields!Group2.Value,"")
Below is the code to control visibility of each part of the report
Group1Header : =Parameters!pagebreak.Value < 1 'hidden when no page break occurs Group2Header : =Parameters!pagebreak.Value < 2 'hidden when no page break occurs Group1_2_Header : =Parameters!pagebreak.Value >0 'hidden when page break for group 1 occurs Group2_2_Header : =Parameters!pagebreak.Value >1 'hidden when page break for group 2 occurs Group2_2_Footer(SUM) : = NOT( Iif(Parameters!pagebreak.Value>1,RowNumber("Group2"),RowNumber("Group2_2")) = Iif(Parameters!pagebreak.Value>1,CountRows("Group2"),CountRows("Group2_2")) ) Group1_2_Footer(SUM) : = NOT( Iif(Parameters!pagebreak.Value>0,RowNumber("Group1"),RowNumber("Group1_2")) = Iif(Parameters!pagebreak.Value>0,CountRows("Group1"),CountRows("Group1_2")) ) Group_Grand_total_Footer(SUM) : = NOT( CountRows("table1") = RowNumber("table1") )
The code below is to display the right totals SUM for measure, for each group
Group2_2_Footer(SUM) : =Iif(Parameters!pagebreak.Value>1,SUM(Fields!measure.Value,"Group2"),SUM(Fields!measure.Value)) Group1_2_Footer(SUM) : =Iif(Parameters!pagebreak.Value>0,SUM(Fields!measure.Value,"Group1"),SUM(Fields!measure.Value)) Group_Grand_total_Footer(SUM) : =Sum(Fields!measure.Value,"table1")
|
CopyRight 2018-2019 实验室设备网 版权所有 |